NAND FLASH memories are large integration scale devices capable of storing vast amounts of data. These devices have a cell array organized in blocks of memory cells electrically connected in series. Each block is generally organized in a certain number of pages of data storage space. Because of their commercial importance, reference will be made to these FLASH memory devices, but the technical approaches that will be described may be implementable in any non-volatile memory of similar architecture and constraints.
NAND FLASH memory devices have intrinsic problems of efficiency due to the peculiar architecture of the array of cells, and to the relatively high voltages that are applied during program operations. The high voltages may damage the cells.
Blocks of cells that contain one or more failed bits are designated bad blocks. They may already be present in the array as fabricated, and are detected during the test on wafer phase to which each device is subjected. They may also develop during the working life of the device.
All the cells of valid blocks are initially in the erased state. All memory locations have the code FFh stored therein. Typically, in a test on wafer phase (EWS), failed blocks are marked bad and as much as possible they are substituted with corresponding redundancy blocks.
Commonly, the state of each block, as verified during a test on wafer phase, is stored in a respective subset of array cells commonly called the spare area. If the spare area associated to a block does not store the code FFh in the first page, it then means that the block has been marked bad.
To impede access to failed blocks, a dedicated table of bad blocks and of corresponding redundancy blocks table is generated, on which eventual re-mapping operations may be implemented.
The table of failed blocks is generated by reading the cells of the spare area of the memory blocks and is saved in a good block. At every start-up of the memory device, the bad block table is loaded in a RAM memory and is read for re-mapping bad blocks to respective redundancy blocks.
During the working life of the memory device, in any case after the EWS phase, some blocks initially recognized as good may become unusable because one or more cells of the block fails. Newly developed bad blocks are located when an attempt to program or erase them is carried out and the state register of the memory signals the failure. When this occurs, these new fail blocks need to be substituted with other available good redundancy blocks in which data should be copied.
For this purpose, software implemented algorithms are commonly used, such as that illustrated in the block diagram of FIG. 1, for updating the bad block table. This software for managing bad blocks, executed by circuitry commonly referred to by the acronym BBM (Bad Block Management), identifies newly failed blocks and updates the bad block table for re-mapping read or write operations addressing bad blocks to the corresponding substitute redundancy blocks.
Operations carried out by this software are the following. At the start up of the memory device, the cells of the spare area of each block are read. From the read information, a bad block table to be loaded in the external RAM for re-mapping accesses to bad blocks is obtained. Should a good block fail at a certain time of the working life of the NAND FLASH memory device, this block is marked as bad by writing the information in the cells of the spare area, and is updated in the RAM memory for inhibiting access to it.
This procedure is difficult from a computational point of view and requires a non-volatile memory space of non-negligible size in which the complex codes of the management software are to be stored. Specially in low end memory devices, this represents a relevant cost. At every turn on of the device, the bad block management software needs to read the spare area associated to each block of cells, and generate an eventually updated bad block address table to be loaded in the RAM memory.
When a block that was initially good develops a fail during the working life of the memory device, the management software marks the newly found bad block and prevents any access to it. As a consequence, the capacity of the FLASH memory progressively decreases during its working life.
U.S. Pat. No. 6,288,940 discloses a non-volatile memory comprising a circuit for impeding access to newly developed bad blocks.
Published European patent application EP 1,469,481 discloses a method and device for managing, during the functioning, of bad memory blocks detected in a phase of test on wafer (EWS). The method uses software for managing eventual bad blocks that may develop fails during the working life of the memory device.
U.S. Pat. No. 6,260,156 discloses a method for managing bad memory blocks, wherein memory access operations are stopped when access to a bad block, the address of which is stored in a non-volatile fashion in a table, is attempted.